package com.neusoft.neuiotms.dcam.fixed.dto;

import java.util.Date;

import javax.validation.constraints.NotBlank;

import org.hibernate.validator.constraints.Length;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.neusoft.bizcore.web.dto.AbstractAuditDTO;
import com.neusoft.neuiotms.dcam.fixed.model.enums.InventoryDutyResultStatus;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class InventoryResultDTO extends AbstractAuditDTO {

    private static final long serialVersionUID = 1L;

    /** 资产名称 */
    @Excel(name = "资产名称")
    @NotBlank(message = "资产名不能为空")
    @Length(max = 255, message = "资产名不能超过{max}位")
    private String name;

    /** 资产编码 */
    @Length(max = 255, message = "固资编号不能超过{max}位")
    private String code;

    /** 类型ID */
    //    private Long typeId;

    /** 类型名称 */
    private String typeName;

    /** 类型编码 */
    private String typeCode;

    /** 合同ID */
    private String contractCode;

    /** 合同ID */
    private String contractName;

    /** 位置ID */
    private String locationCode;

    /** 位置名称 */
    private String locationName;

    /** 使用人ID */
    private String userId;

    /** 使用人姓名 */
    private String userName;

    /** 使用部门 */
    private String orgId;

    /** 使用部门名称 */
    private String orgName;

    /** 产品ID */
    private Long productId;

    /** 产品名称 */
    private String productName;

    /** 供应商ID */
    private Long manufacturerId;

    /** 供应商名称 */
    private String manufacturerName;

    /** 计量单位 */
    private String measureUnit;

    /** 序列号 */
    private String sequence;

    /** 金额 */
    private Double money;

    /** 使用期限 */
    private Double month;

    /** 资产ID */
    private Long assetId;

    /** 使用人ID(变更) */
    private String updateUserId;

    /** 使用人姓名(变更) */
    private String updateUserName;

    /** 使用部门(变更) */
    private String updateOrgCode;

    /** 使用部门名称 (变更) */
    private String updateOrgName;

    /** 位置(变更) */
    private String updateLocationCode;

    /** 位置名称 (变更) */
    private String updateLocationName;

    /** 盘点备注 */
    private String note;

    /** 盘点结果状态 */
    private InventoryDutyResultStatus dutyResultStatus;

    /** 任务ID */
    private Long dutyId;

    /** 任务Name */
    private String dutyName;

    /** 任务Code */
    private String dutyCode;

    /** 任务负责人ID */
    private Long dutyUserId;

    /** 任务负责人名称 */
    private String dutyUserName;

    /** 维保ID */
    private Long maintenanceId;

    /** 维保开始时间 */
    @JsonFormat(timezone = "GMT+8")
    private Date maintenanceStart;

    /** 维保结束时间 */
    @JsonFormat(timezone = "GMT+8")
    private Date maintenanceEnd;

    /** 维保负责人 */
    private String maintenanceUserId;

    /** 维保负责人姓名 */
    private String maintenanceUserName;

    /** 维保说明 */
    private String maintenanceNote;

    /** 资产状态 */
    private String status = "idle";

    /** 资产来源 */
    private String source = "purchase";

    /** id字符串 */
    private String ids;

    /** 计划id */
    private Long planId;

    /** 计划编码id */
    private String planCode;

    /** 计划名称 */
    private String planName;

    /** 计划状态 */
    private String planStatus;

    /** 扩展属性1 */
    private String ext1;
    /** 扩展属性1是表格显示名称 */
    private String ext1TsName;

    /** 扩展属性2 */
    private String ext2;
    /** 扩展属性2是表格显示名称 */
    private String ext2TsName;

    /** 扩展属性3 */
    private String ext3;
    /** 扩展属性3是表格显示名称 */
    private String ext3TsName;

    /** 扩展属性4 */
    private String ext4;
    /** 扩展属性4是表格显示名称 */
    private String ext4TsName;

    /** 扩展属性5 */
    private String ext5;
    /** 扩展属性5是表格显示名称 */
    private String ext5TsName;
}
